home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2010 Summer - Disc 1 / WN_Ete2010_CD1.iso / Onglet5 / Weezo / Weezo setup.exe / {code_appDir} / www / includes / php-reader / ASF.php next >
PHP Script  |  2010-05-19  |  6KB  |  152 lines

  1. <?php
  2. /**
  3.  * PHP Reader Library
  4.  *
  5.  * Copyright (c) 2006-2008 The PHP Reader Project Workgroup. All rights
  6.  * reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms, with or without
  9.  * modification, are permitted provided that the following conditions are met:
  10.  *
  11.  *  - Redistributions of source code must retain the above copyright notice,
  12.  *    this list of conditions and the following disclaimer.
  13.  *  - Redistributions in binary form must reproduce the above copyright notice,
  14.  *    this list of conditions and the following disclaimer in the documentation
  15.  *    and/or other materials provided with the distribution.
  16.  *  - Neither the name of the project workgroup nor the names of its
  17.  *    contributors may be used to endorse or promote products derived from this
  18.  *    software without specific prior written permission.
  19.  *
  20.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21.  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23.  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  24.  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25.  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26.  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27.  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28.  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29.  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30.  * POSSIBILITY OF SUCH DAMAGE.
  31.  *
  32.  * @package    php-reader
  33.  * @subpackage ASF
  34.  * @copyright  Copyright (c) 2006-2008 The PHP Reader Project Workgroup
  35.  * @license    http://code.google.com/p/php-reader/wiki/License New BSD License
  36.  * @version    $Id: ASF.php 108 2008-09-05 17:00:05Z svollbehr $
  37.  */
  38.  
  39. /**#@+ @ignore */
  40. require_once("Reader.php");
  41. require_once("ASF/Object/Container.php");
  42. /**#@-*/
  43.  
  44. /**
  45.  * This class represents a file in Advanced Systems Format (ASF) as described in
  46.  * {@link http://go.microsoft.com/fwlink/?LinkId=31334 The Advanced Systems
  47.  * Format (ASF) Specification}. It is a file format that can contain various
  48.  * types of information ranging from audio and video to script commands and
  49.  * developer defined custom streams.
  50.  *
  51.  * The ASF file consists of code blocks that are called content objects. Each
  52.  * of these objects have a format of their own. They may contain other objects
  53.  * or other specific data. Each supported object has been implemented as their
  54.  * own classes to ease the correct use of the information.
  55.  *
  56.  * @package    php-reader
  57.  * @subpackage ASF
  58.  * @author     Sven Vollbehr <svollbehr@gmail.com>
  59.  * @copyright  Copyright (c) 2006-2008 The PHP Reader Project Workgroup
  60.  * @license    http://code.google.com/p/php-reader/wiki/License New BSD License
  61.  * @version    $Rev: 108 $
  62.  */
  63. class ASF extends ASF_Object_Container
  64. {
  65.   const HEADER = "75b22630-668e-11cf-a6d9-00aa0062ce6c";
  66.   const DATA = "75b22636-668e-11cf-a6d9-00aa0062ce6c";
  67.   const SIMPLE_INDEX = "33000890-e5b1-11cf-89f4-00a0c90349cb";
  68.   const INDEX = "d6e229d3-35da-11d1-9034-00a0c90349be";
  69.   const MEDIA_OBJECT_INDEX = "feb103f8-12ad-4c64-840f-2a1d2f7ad48c";
  70.   const TIMECODE_INDEX = "3cb73fd0-0c4a-4803-953d-edf7b6228f0c";
  71.  
  72.   /** @var string */
  73.   private $_filename;
  74.  
  75.   /**
  76.    * Constructs the ASF class with given file and options.
  77.    *
  78.    * The following options are currently recognized:
  79.    *   o encoding -- Indicates the encoding that all the texts are presented
  80.    *     with. By default this is set to utf-8. See the documentation of iconv
  81.    *     for accepted values.
  82.    *   o readonly -- Indicates that the file is read from a temporary location
  83.    *     or another source it cannot be written back to.
  84.    *
  85.    * @param string $filename The path to the file or file descriptor of an
  86.    *                         opened file.
  87.    * @param Array  $options  The options array.
  88.    */
  89.   public function __construct($filename, $options = array())
  90.   {
  91.     $this->_reader = new Reader($this->_filename = $filename);
  92.     $this->setOptions($options);
  93.     if ($this->getOption("encoding", false) === false)
  94.       $this->setOption("encoding", "utf-8");
  95.     $this->setOffset(0);
  96.     $this->setSize($this->_reader->getSize());
  97.     $this->constructObjects
  98.       (array
  99.        (self::HEADER => "Header",
  100.         self::DATA => "Data",
  101.         self::SIMPLE_INDEX => "SimpleIndex",
  102.         self::INDEX => "Index",
  103.         self::MEDIA_OBJECT_INDEX => "MediaObjectIndex",
  104.         self::TIMECODE_INDEX => "TimecodeIndex"));
  105.   }
  106.  
  107.   /**
  108.    * Returns the mandatory header object contained in this file.
  109.    *
  110.    * @return ASF_Object_Header
  111.    */
  112.   public function getHeader()
  113.   {
  114.     $header = $this->getObjectsByIdentifier(self::HEADER);
  115.     return @$header[0];
  116.   }
  117.  
  118.   /**
  119.    * Returns the mandatory data object contained in this file.
  120.    *
  121.    * @return ASF_Object_Data
  122.    */
  123.   public function getData()
  124.   {
  125.     $data = $this->getObjectsByIdentifier(self::DATA);
  126.     return $data[0];
  127.   }
  128.  
  129.   /**
  130.    * Returns an array of index objects contained in this file.
  131.    *
  132.    * @return Array
  133.    */
  134.   public function getIndices()
  135.   {
  136.     return $this->getObjectsByIdentifier
  137.       (self::SIMPLE_INDEX . "|" . self::INDEX . "|" .
  138.        self::MEDIA_OBJECT_INDEX . "|" . self::TIMECODE_INDEX);
  139.   }
  140.  
  141.   /**
  142.    * Writes the changes back to the original media file.
  143.    *
  144.    * Please note: currently the method writes only Content Description and
  145.    * Extended Content Description Objects.
  146.    */
  147.   public function write()
  148.   {
  149.     throw new ASF_Exception("Not yet supported");
  150.   }
  151. }
  152.